It can be both time-consuming and costly to build and track software applications using traditional development approaches that include processing steps that run at different times and that have different durations, while ensuring the steps are executed reliably and without duplication. When the execution of an application is distributed across multiple systems, the coordination of processing steps across the multiple systems may present an even greater challenge.
One alternative to traditional software development involves the use of a workflow execution system to implement an application. Utilizing a workflow execution system, developers can structure the various processing steps in a software application as “tasks” that drive work in distributed applications. The workflow execution service can coordinate these tasks in a reliable and scalable manner. For example, a workflow execution system might manage task execution dependencies, scheduling, and concurrency based on the application logic supplied by the developer. The workflow execution system might also store tasks, reliably dispatch the tasks to application components, track the progress of tasks, and keep information describing the latest state of the tasks.
One challenge associated with the use of workflow execution systems stems from the difficulty in converting applications not originally programmed for execution by a workflow execution system (“non-workflow applications”) for use with the workflow execution system. Non-workflow applications might be composed of many individual, sequential programs running at different times and for different durations on many different physical or virtual machines. As a result, the process of manually converting a non-workflow program to a workflow program configured for use with a workflow execution system might be difficult, time consuming, and costly.
The disclosure made herein is presented with respect to these and other considerations.